package vista.ventanaProyecto;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import modelo.Proyecto;
import modelo.SistemaPrincipal;
import modelo.exception.CrearProyectoException;
import modelo.exception.ProyectoYaExistenteException;
/**
 * 
 * @author rocio
 *
 */
public class CrearProyecto extends JFrame{
	/*para crear un proyecto debo poder crearlo solo con el nombre.
	 * luego en la ventana de ver tareas se le podra crear tareas al proyecto
	 */
	
	
	// Variables  *********************************************************** //
	private static final long serialVersionUID = -2396027376344269159L;
	private JButton guardar ;
	private JButton cancelar;
	private JPanel panel, panel2;
	private JLabel idLabel ; 
	private JTextField idText ;
	private SistemaPrincipal myActualObserver;
	
	
	// Contructor *********************************************************** //

	public CrearProyecto(SistemaPrincipal myActualObserver) {
		
		
		super("Nuevo proyecto");
		this.myActualObserver = myActualObserver;
		this.init();
		this.agregarComponentes();		
	}
	
	// Metodos  *********************************************************** //
	
	/**
	 * Inicializa los componentes
	 */
	public void init(){
		//inicializo los componentes
		this.getContentPane().setLayout(new BorderLayout());
		 this.guardar = new JButton ("guardar");
		 this.cancelar = new JButton ("cancelar");
		 this.idLabel = new JLabel("Nombre del Proyecto");
		 this.idText = new JTextField(20);
		 this.panel = new JPanel();
		 this.panel2 = new JPanel();

	}
	
	/**
	 * Agrega los comoponentes al Jframe
	 */
	public void agregarComponentes(){
		this.panel.add(idLabel); 
		this.panel.add(idText);
		
		this.panel2.add(guardar);
		this.panel2.add(cancelar);
		
		//funciones de los buton
		this.cancelar.addActionListener(new BotonCancelarListener());
		this.guardar.addActionListener(new BotonGuardarListener());
		
		//Propiedades de la ventana
		this.pack(); 
		this.setSize(250, 160);
		this.setVisible(true); 
		this.getContentPane().add(panel,BorderLayout.CENTER);
		this.getContentPane().add(panel2,BorderLayout.SOUTH);
		this.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE);

	}
	
	/**
	 * Boton Cancelar 
	 */
	public class BotonCancelarListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			CrearProyecto.this.dispose();
			myActualObserver.onChange();
		}
	}
	
	/**
	 * Boton Guardar
	 */
	public class BotonGuardarListener implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e) {
			
			try {
				myActualObserver.agregarProyecto(new Proyecto(idText.getText()));
				CrearProyecto.this.dispose();		
			}
			catch (CrearProyectoException x) {
				JOptionPane.showMessageDialog(panel, "El proyecto debe crearse con un nombre",
						"Mensaje", JOptionPane.ERROR_MESSAGE);
			}
			catch (ProyectoYaExistenteException x) {
				JOptionPane.showMessageDialog(panel, "Ya existe un proyecto con ese nombre",
						"Mensaje", JOptionPane.ERROR_MESSAGE);
			}
			
		}
	}
}


